/*
 * Copyright (C) 2012 POAS.VSTU
 */

package ui;

import java.awt.Point;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import model.Card;
import model.CardPile;
import model.PlayerCardPile;
import sun.reflect.generics.reflectiveObjects.NotImplementedException;

/**
 *
 * @author Litovkin
 */
public class UIPlayerCardPile extends UICardPile {
    
    UIPlayer mPlayer;
    
    public UIPlayerCardPile( PlayerCardPile playerCardPile, UIPlayer player, JPanel gamePanel ) {
        super(playerCardPile, (UIGamePanel) gamePanel);
        mPlayer = player;
    }
    
    /**
     * Добавить карту к игроку
     * @param card - добавляемая карта
     */
    public void add(UICard card) {
        throw new NotImplementedException();
    }

    /**
     * Добавить список карт к игроку
     * @param cards - список добавляемых карт
     */
    public void add(List<UICard> cards) {
        throw new NotImplementedException();
    }

    /**
     * Выбрать карту из колоды
     * @param card
     */
    public void choose(UICard card) {
        throw new NotImplementedException(); 
    }

    /**
     * Выбрасывание выбранных карт
     * @return список извлеченных карт
     */
    public List<UICard> popChoosen() {
        throw new NotImplementedException();
    }
    

    @Override
    public void dragIn(CardPile cards) {
        UICard uiCard;
        for(Card card: cards) {
            uiCard = mPanel.getUICard(card);
            uiCard.actionMoveTo(getLocation(), MovementSpeed.NORMAL, 0);
            uiCard.actionSetOrientation(getOrientation(), 0);
        }
    }   
    
    
    @Override
    public void push(CardPile cards) {
        int dx = 0;
        int dy = 0;
        UICard uiCard;
        for(Card card: cards) {
            uiCard = mPanel.getUICard(card);
            if(getOrientation() == Orientation.NORMAL 
                    || getOrientation() == Orientation.INVERTED ) {
                dx = 15*(mModel.size() );
            } else {
                dy = 15*(mModel.size() );
            } 
            
            if(!isFaceDown()) {
                uiCard.actionTurnFaceUp(0);
            }
            uiCard.actionMoveTo(new Point(getLocation().x + dx, getLocation().y + dy), MovementSpeed.NORMAL, 0);
            mPlayer.actionUpdateLabels(uiCard.getLabel());
        }        
    }
    
    @Override
    public void pop(CardPile cards) {
        UICard uiCard;
        for(Card card: cards) {
            uiCard = mPanel.getUICard(card);
            uiCard.actionSetOrientation(Orientation.NORMAL, 70);
            mPlayer.actionUpdateLabels(uiCard.getLabel());
        }
    }
}